home *** CD-ROM | disk | FTP | other *** search
- // Include pour les objets
- // (C) 1992 Christophe PASSUELLO
- // Tue Mar 23 17:32:54 1993
-
-
- #ifndef EXEC_TYPES_H
- #include "exec/types.h"
- #endif
-
- #ifndef
- #define INTUITION_PREFERENCES_H TRUE
- #endif
- #include <intuition/intuition.h>
-
-
- // GadgetID pour les objets
- #define OBJECTID 0x0ACE
-
- #define COPY_BOX(dest,src) (*((struct Box *)dest))=(*((struct Box *)src))
-
-
- // definition d'une boite
- struct Box
- {
- UWORD x, y;
- UWORD w, h;
- };
-
- // Type de bordure pour Draw3DBox
- #define BOX_1IN 0
- #define BOX_1OUT 1
- #define BOX_2IN 2
- #define BOX_2OUT 3
-
-
- // Table des methodes virtuelles
- struct ObjectTMV
- {
- UWORD Class;
- UWORD Size;
- VOID (*Free) (struct Object *);
- BOOL (*SendMsg) (struct Object *, struct IntuiMessage *);
- VOID (*Add) (struct Object *, struct Window *, struct Requester *);
- VOID (*Remove) (struct Object *);
- VOID (*Display) (struct Object *);
- VOID (*Erase) (struct Object *);
- VOID (*Modify) (struct Object *, ...);
- VOID (*Value) (struct Object *);
- VOID (*OffObject) (struct Object *);
- VOID (*OnObject) (struct Object *);
- VOID (*Activate) (struct Object *);
- };
-
-
- // Classes d'objets
- #define CLASS_CYCLE 1
- #define CLASS_SCROLLER 2
- #define CLASS_BUTTON 3
- #define CLASS_INTEGER 4
- #define CLASS_STRING 5
- #define CLASS_CHECK 6
-
- /* IDCMP flags for the window */
- #define IDCMP_CYCLE (GADGETUP)
- #define IDCMP_SCROLLER (GADGETDOWN|GADGETUP|MOUSEMOVE)
- #define IDCMP_BUTTON (GADGETDOWN|GADGETUP)
- #define IDCMP_INTEGER (GADGETDOWN|GADGETUP)
- #define IDCMP_STRING (GADGETDOWN|GADGETUP)
- #define IDCMP_CHECK (GADGETDOWN)
-
-
- struct NewObject
- {
- UWORD LeftEdge, TopEdge; // position de l'objet
- UWORD Width, Height; // taille de l'objet
- UWORD Flags; // Flags pour toutes les classes d'objet
- UWORD ClassFlags; // Flags specialise pour chaque classe
- STRPTR LabelText; // Label de l'objet
- struct TextAttr *Font; // Fonte pour le label et le texte de l'objet
- };
-
-
- // Flags pour NewObject.Flags
- #define LABEL_MASK 0x007f // position du label par rapport à l'objet
- #define LABEL_ABOVE 0x0001 // au dessus
- #define LABEL_BELOW 0x0002 // en dessous
- #define LABEL_RIGHT 0x0004 // a droite
- #define LABEL_LEFT 0x0008 // a gauche
- #define LABEL_INSIDE 0x0010 // a l'interieur
- #define LABEL_HOT_KEY 0x0020 // Souligne le caractères suivant le '_'
- #define LABEL_PEN2 0x0040 // Label ecrit avec la couleur Pen2
-
- #define OBJ_DISABLED 0x0080 /* Object ghosted (Off) */
-
-
- struct NewCycle
- {
- struct NewObject NewObj;
- STRPTR *TextArray;
- };
-
-
- struct NewButton
- {
- struct NewObject NewObj;
- };
-
- // ClassFlags pour les boutons
- #define BT_TOGGLE 0x0001
- #define BT_SELECTED 0x0002
- #define BT_IMAGELABEL 0x0004
-
- struct NewScroller
- {
- struct NewObject NewObj;
- UWORD Pos;
- UWORD CurSize;
- UWORD MaxSize;
- };
-
- // ClassFlags pour les scrollers
- #define SC_VERTICAL 0x0001 // Scroller vertical
- #define SC_NOMOUSE 0x0002 // pas de FOLLOWMOUSE
-
-
- struct NewCheck
- {
- struct NewObject NewObj;
- };
-
- // ClassFlags pour les checks
- #define CK_CHECKED 0x0001 // le check est coche
-
-
- struct NewString
- {
- struct NewObject NewObj;
- STRPTR Text;
- UWORD MaxLength;
- };
-
-
- struct NewInteger
- {
- struct NewObject NewObj;
- };
-
- // ClassFlags pour les integer et les string
- #define STR_SINGLEBORD 0x0001
- #define STR_RIGHT 0x0002
- #define STR_CENTER 0x0004
-
-
- struct NewTextArea
- {
- UWORD LeftEdge, TopEdge;
- UWORD Width, Height;
- UWORD Flags;
- UWORD ClassFlags;
- STRPTR LabelText;
- struct TextAttr *Font;
- UBYTE FrontPen, BackPen;
- UBYTE InterLine;
- UBYTE WrMask;
- };
-
- // flags pour NewTextArea.Flags
- #define LABEL_ABOVE 0x0001 // au dessus
- #define LABEL_BELOW 0x0002 // en dessous
- #define LABEL_RIGHT 0x0004 // a droite
- #define LABEL_LEFT 0x0008 // a gauche
- #define LABEL_PEN2 0x0040 // Label ecrit avec la couleur Pen2
-
- // flags pour NewTextArea.ClassFlags
- #define TAF_SMOOTH_SCROLL 1
- #define TAF_CLIP_TEXT 2
-
- struct Object
- {
- struct ObjectTMV *TMV;
- UWORD ObjectID;
- UWORD Flags;
- STRPTR LabelText;
- struct TextFont *Font;
- struct Window *window;
- struct Requester *requester;
- UWORD ClassFlags;
- struct Box BorderBox;
- };
-
-
- struct ObjectGad
- {
- struct ObjectTMV *TMV;
- UWORD ObjectID;
- UWORD Flags;
- STRPTR LabelText;
- struct TextFont *Font;
- struct Window *window;
- struct Requester *requester;
- UWORD ClassFlags;
- struct Box BorderBox;
- struct Gadget Gadget;
- };
-
-
- struct DrawEnv
- {
- UBYTE APen;
- UBYTE BPen;
- UBYTE DrMd;
- };
-
-
- struct TextEnv
- {
- struct TextFont *Font;
- struct DrawEnv *Env;
- };
-
-
- // methodes generiques pour les Object
- UWORD GetObjectID(struct Object *);
- struct Object *FindObjectMsg(struct IntuiMessage *);
- UBYTE GetHotKey(CPTR);
-
- // private
- VOID InitObject(struct Object *, struct NewObject *);
- VOID InitObjectGad(struct ObjectGad *, struct NewObject *);
- VOID EraseObjectLabel(struct Object *, struct Box *);
- VOID PrintObjectLabel(struct Object *, struct Box *);
- VOID EraseObjectFrame(struct Object *, struct Box *);
- VOID OffObjectGad(struct ObjectGad *);
- VOID DisposeObject(struct Object *);
- VOID AddObject(struct ObjectGad *, struct Window *, struct Requester *);
- VOID RemoveObject(struct ObjectGad *);
-
- // prototypes
- VOID SetIObjectColors(UBYTE, UBYTE, UBYTE, UBYTE, UBYTE);
- VOID Draw3DBox(struct Box *, struct RastPort *, UWORD);
- VOID AdjustBox(struct Box *, BOOL);
- VOID ExitEasyGadget();
- BOOL InitEasyGadget();
-
- // private
- struct TextFont *LoadFont(struct TextAttr *);
- VOID PrintLabelText(struct RastPort *, struct Box *, STRPTR, UWORD);
- VOID EraseLabelText(struct RastPort *, struct Box *, STRPTR, UWORD);
- VOID FastDraw3DBox(struct Box *, struct RastPort *, UWORD);
- VOID EraseBox (struct Box *, struct RastPort *);
- VOID FastEraseBox (struct Box *, struct RastPort *);
- VOID SaveDrawEnv(struct RastPort *, struct DrawEnv *);
- VOID RestoreDrawEnv(struct RastPort *, struct DrawEnv *);
- VOID SaveTextEnv(struct RastPort *, struct TextEnv *);
- VOID RestoreTextEnv(struct RastPort *, struct TextEnv *);
- VOID SetActiveObject(struct Object *, ULONG);
- VOID GhostInnerBox(struct Box *, struct RastPort *, BOOL);
- VOID GhostBox(struct Box *, struct RastPort *);
- VOID DoNothing();
-
-
- // methodes pour les objets
- struct Cycle *CreateCycle(struct NewCycle *, ULONG);
- struct Button *CreateButton(struct NewButton *, ULONG);
- struct Check *CreateCheck(struct NewCheck *, ULONG);
- struct Scroller *CreateScroller(struct NewScroller *, ULONG);
- struct Integer *CreateInteger(struct NewInteger *, ULONG);
- struct String *CreateString(struct NewString *, ULONG);
-
- VOID FreeObject(struct Object *);
- BOOL SendMsgToObject(struct Object *, struct IntuiMessage *);
- VOID AddObjectToWindow(struct Object *, struct Window *, struct Requester *);
- VOID RemoveObjectFromWindow(struct Object *);
- VOID DisplayObject(struct Object *);
- VOID EraseObject(struct Object *);
- VOID ModifyObject(struct Object *, ...);
- ULONG ObjectValue(struct Object *);
- struct Object *CreateObject(struct NewObject *, UWORD, UWORD);
- VOID ActivateObject(struct Object *);
- VOID OnObject(struct Object *);
- VOID OffObject(struct Object *);
-
- // Prototypes pour les TextArea
- struct TextArea *CreateTextArea(struct NewTextArea *, struct RastPort *);
- VOID FreeTextArea(struct TextArea *);
- VOID TAPuts(struct TextArea *,char *);
- VOID TAPrint(struct TextArea *,char *);
- VOID TAPrintf(struct TextArea *,char *, ...);
-
- // Prototypes des libraries
- extern int sprintf(char *, const char *, ...);
- extern long strlen(char *);
- extern char *strchr(const char *, int);
- extern void *memcpy(void *, const void *, long);
- extern char *AllocMem(long, long);
- extern void FreeMem(void *, long);
- extern long SetSoftStyle(struct RastPort *, long, long);
- extern void RectFill(struct RastPort *, long, long, long, long);
- extern long TextLength(struct RastPort *, char *, long);
- extern long Text(struct RastPort *, char *, long);
- extern long SetFont(struct RastPort *, struct TextFont*);
- extern struct TextFont *OpenFont(struct TextAttr *);
- extern void CloseFont(struct TextFont *);
- extern void Move(struct RastPort *, long, long);
- extern void Draw(struct RastPort *, long, long);
- extern void SetAPen(struct RastPort *, long);
- extern void SetBPen(struct RastPort *, long);
- extern void SetDrMd(struct RastPort *, long);
- extern struct TextFont *OpenDiskFont(struct textAttr *);
- extern void DrawImage(struct RastPort *, struct Image *, long, long);
- extern void RefreshGList(struct Gadget *, struct Window *, struct Requester *, long);
- extern long AddGList(struct Window *, struct Gadget *, long, long, struct Requester *);
- extern long RemoveGList(struct Window *, struct Gadget *, long);
- extern void RefreshGadgets(struct Gadget *, struct Window *, struct Requester *);
- extern long RemoveGadget(struct Window *, struct Gadget *);
- extern void RefreshGadgets(struct Gadget *, struct Window *, struct Requester *);
- extern long RemoveGadget(struct Window *, struct Gadget *);
- extern long AddGadget(struct Window *, struct Gadget *, long);
- extern void NewModifyProp(struct Gadget *, struct Window *, struct Requester *, long, long, long, long, long, long);
- long ActivateGadget(struct Gadget *, struct Window *, struct Requester *);
- void DisplayBeep(struct Screen *);
- void OffGadget(struct Gadget *, struct Window *, struct Requester *);
- void OnGadget(struct Gadget *, struct Window *, struct Requester *);
-